[openrtm-users 02790] Re: [openrtm-beginners:00430] Re: OpenRTM-aist(C++)でのQtの利用について

Ando Noriaki n-ando @ aist.go.jp
2013年 4月 30日 (火) 17:04:46 JST


$BD9_7$5$s(B
$B7*86$5$s!c2r @ b$"$j$,$H$&$4$6$$$^$9!#(B

$B0BF#$G$9(B

$B!t(Bbeginners$B$O2aAB$C$F$k$N$G!"(Busers$B$N$[$&$,Ez$($F$b$i$($k3NN($,9b$$$G$9!#(B

C++$B$G;29M$K$J$k%3!<%I$O$A$g$C$H$J$+$C$?$N$G$9$,!"(BPython$BHG$N(B
$B%5%s%W%k$K;w$?$h$&$J1~MQNc$,$"$j$^$7$?!#(B

Python$B$N%5%s%W%k$H$7$FIUB0$7$F$$$k(BGUI$B%8%g%$%9%F%#%C%/(B
http://svn.openrtm.org/OpenRTM-aist-Python/trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/TkJoyStick/TkJoyStickComp.py

$B0\F0%m%\%C%H$N%7%s%W%k$J%7%_%e%l!<%?$N%5%s%W%k(B
http://svn.openrtm.org/OpenRTM-aist-Python/trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/MobileRobotCanvas/TkMobileRobotSimulator.py

$B$J$I$,7*86$5$s$,8@$o$l$?$h$&$J$3$H$r$7$F$$$^$9!#(B

TkJoystickComp$B$N%5%s%W%k$N(Bmain$B4X?t$G$9$,!"0J2<$N$h$&$K$J$C$F$$$^$9!#(B

 def main():
   tkJoyCanvas = tkjoystick.TkJoystick() # GUI$B%*%V%8%'%/%H$r:n @ .(B
   tkJoyCanvas.master.title("TkJoystick")
   mgr = OpenRTM_aist.Manager.init(sys.argv) # RTC$B%^%M!<%8%c$r:n @ .(B
   mgr.activateManager() #$B%^%M!<%8%c$r3h @ -2=(B

   # $B%3%s%]!<%M%s%H$NEPO?(B
   profile = OpenRTM_aist.Properties(defaults_str=tkjoystick_spec)
   mgr.registerFactory(profile,
                       TkJoyStick,
                       OpenRTM_aist.Delete)
   # $B%3%s%]!<%M%s%H$N @ 8@.(B
   comp = mgr.createComponent("TkJoyStick")

   # $B$3$N%3%s%]!<%M%s%H$K$O(Bset_pos$B$H$$$&%a%s%P4X?t$,$"$j!"(B
   # GUI$B%8%g%$%9%F%#%C%/$N:BI8$r%3%s%]!<%M%s%H$KEO$9$?$a$K;HMQ$5$l$k!#(B
   # TkJoystick$B$N(BGUI$B$N(Bupdate$B%$%Y%s%H$,8F$P$l$k$H$-$K!"(B
   # $B$3$$$D$r8F$V$h$&$K%3!<%k%P%C%/$H$7$F%;%C%H$9$k!#(B
   tkJoyCanvas.set_on_update(comp.set_pos)
   mgr.runManager(True) # $B%^%M!<%8%c$N(BrunManager$B$N0z?t$K(BTrue$B$rEO$7$F(Bnon-block$B%b!<%I$G%^%M!<%8%c$r5/F0(B
   tkJoyCanvas.mainloop() # Python$B$N(BGUI$B$N%a%$%s%k!<%W$KF~$k!#(B

 if __name__ == "__main__":
   main()

$B%]%$%s%H$H$7$F$O!"(B

$B#1!K(B $B%3%s%]!<%M%s%H$NCf$+$i(BGUI$B$N%a%$%s%k!<%W4X?t$r8F$s$@$j!"(B
$B!!(B GUI$B%*%V%8%'%/%H$r @ 8@.$7$?$j$O$7$J$$$[$&$,L5Fq(B

$B!!(BGUI$B%D!<%k%-%C%H$NCf$K$O!"(Bmain$B%9%l%C%I$+$i8F$P$J$1$l$P$J$i$J$$$b$N$d!"(B
$B!!F10l$N%9%l%C%I$+$i8F$P$l$k$3$H$rA0Ds$H$7$F$$$k4X?t$J$I$r;}$D$b$N$,$"$k!#(B
$B!!(BRTC$B$O(BonInitialize/onFinalize$B$r8F$V%9%l%C%I$H!"(BonExecute/onActivated/onDeactivated $B$=$NB>(B
$B!!$r8F$V%9%l%C%I$O0[$J$j$^$9!#$^$?!"(BonExecute$BB>$N4X?t$OJ#?t$N%9%l%C%I$+$iF1;~$K(B
$B!!8F$P$l$k2DG=@-$9$i$"$j$^$9!#(BGUI$B%9%l%C%I$H(BRTC$B$H$OJL$K07$C$?$[$&$,(B
$B!!%H%i%V%k$O>/$J$$$G$7$g$&!#(B

$B#2!K(BGUI$B$H(BRTC$B$N%G!<%?$N$d$j<h$j$O!"(BRTC$B$K$=$N$?$a$N4X?t$rDI2C$9$k$3$H$GBP1~(B

$B!!>e5-$N$h$&$JM}M3$+$i!"(BGUI$B$H%3%s%]!<%M%s%H$O @ Z$jN%$7$?$[$&$,$h$$$N$G$9$,!"(B
$B!!(BGUI$BB&$H(BRTC$B$H%G!<%?$N$d$j<h$j$r$7$J$1$l$P$J$i$J$$;~$K:$$j$^$9!#(B
$B!!DL>o(BRTC$B$K%G!<%?$N$d$j<h$j$r$9$k$?$a$N%$%s%?!<%U%'!<%9$rJLES7Q>5$5$;$F!"(B
$B!!(BcreateComponent$B$G<hF@$7$?%3%s%]!<%M%s%H$X$N%]%$%s%?$r<hF@$7$F(BGUI
$B!!B&$+$i%G!<%?$r<hF@$7$?$j!"%G!<%?$rM?$($?$j$7$^$9!#(B

class IMyInterface
{
public:
    virtual int getData() = 0;
    virtual void setData(double x, double y) = 0;
};

class MyComponent
 : public IMyInterface,
   public RTC::DataFlowComponentBase
{
 : $B%3%s%]!<%M%s%H$NDj5A(B
public:
    virtual int getData()
    {
        coil::Guard guard(m_outdatalock);
        return m_outdata;
     }
   virtual void setData(double x, double y)
    {
        coil::Guard guard(m_indatalock);
        m_indata.x = x;
        m_indata.y = y;
    }
};

$B$3$N$h$&$K%3%s%]!<%M%s%H$r<BAu$7$F$*$$$F$+$i!"(B

  RTObject_impl* rtobj = mgr.createComponent("MyComponent");
  IMyInterface* comp = dynamic_cast<IMyInterface*>(rtobj);
  if (comp == 0) { abort(); }
  mgr.runManager(true);
  gui.mainloop();

$B$=$7$F(B
   : GUI$B$N%3%s%H%m!<%kFb$G(B
  std::cout << "out data: " << comp->getData() << std::endl; // $B%G!<%?$r<hF@(B
  comp->setData(1.0, 2.0); // $B%G!<%?$rF~NO(B

 $B$N$h$&$K(BRTC$B$H%G!<%?$N$d$j<h$j$r$7$^$9!#(B

$B#3!K(B RTC$B$H(BGUI$B$N%3%s%H%m!<%k$d%&%#%8%'%C%H$r(B1$BBP(B1$BBP1~$K$7$F$*$/$H$o$+$j$d$9$$(B

$B$?$@$7!"(BGUI$B%3%s%H%m!<%k$H(BRTC$B$O$=$l$>$l @ 8@.J}K!$,0[$J$k$N$G!"JL!9$K(B
$B @ 8@.$7$F!">e=R$7$?$h$&$K(BRTC$B$K<BAu$7$?%G!<%?F~=PNO4X?t$rDL$8$F(BGUI
$B%3%s%H%m!<%k$H7k$S$D$1$?$[$&$,$h$$$G$7$g$&!#(B

$B0\F0%m%\%C%H$N%7%s%W%k$J%7%_%e%l!<%?$N%5%s%W%k$G$O!"0\F0%m%\%C%H%*%V%8%'%/%H$H(B
$B$=$l$KBP1~$9$k(BRTC$B$rF0E*$KA}$d$7$?$j8:$i$7$?$j$7$F$$$^$9!#(B
http://svn.openrtm.org/OpenRTM-aist-Python/trunk/OpenRTM-aist-Python/OpenRTM_aist/examples/MobileRobotCanvas/TkMobileRobotSimulator.py

$B0J>e!";29M$K$7$F$$$?$@$1$l$P9,$$$G$9!#(B
http://openrtm.org/openrtm/ja/node/5317

2013$BG/(B4$B7n(B30$BF|(B 0:43 shinji.k <shinji0608 @ gmail.com>:
> $BD9_7MM(B
>
> $B7*86$H?=$7$^$9!%(B
>
> Qt$B$K4X$7$F$O>\$7$/$J$$$N$G$9$,!$(B
> $B%a%$%s%9%l%C%I$+$i@)8f$7$J$$$H$$$1$J$$%"%W%j$r;HMQ$9$k%3%s%]!<%M%s%H(B
> $B!J(BRTC$B!K$r:n @ .$7$?7P83$,$4$6$$$^$9$N$G!$;29M$^$G$K%3%a%s%H$5$;$F$$$?(B
> $B$@$-$^$9!%(B
>
> $B$^$:!$:#2s$N$h$&$K!$(BQt$B$J$I%a%$%s%9%l%C%I$+$i=hM}$r3+;O$9$kI,MW$,$"$k(BRTC
> $B$r:n @ .$9$k>l9g!$(B<$B%3%s%]!<%M%s%HL>(B>Comp.cpp$B$N(Bmain()$B4X?tFb$N(B
> manager->runManager();$B$H$J$C$F$$$k2U=j$r(B
> manager->runmanager(true)$B$N$h$&$K$7!$$=$N8e$G;HMQ$7$?$$%"%W%j%1!<%7%g%s(B
> $B$N%a%$%s%k!<%W$r8F$S=P$9$H$$$C$?;H$o$lJ}$,B?$$$h$&$G$9!%(B
>
> $B0J2<$K!$N)L?4[Bg3X$NJ}$,:n @ .$5$l$?(BQt$B$r;H$C$?%3%s%]!<%M%s%H$,$"$j$^$9$N$G!$(B
> $B;29M$K$5$l$F$_$k$N$b$h$$$+$H;W$$$^$9!%(B
>
> http://openrtm.sakura.ne.jp/cgi-bin/wiki/wiki.cgi/2010/2B13?page=%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB
>
> http://openrtm.sakura.ne.jp/cgi-bin/wiki/wiki.cgi/2010/2B13?page=%A5%C0%A5%A6%A5%F3%A5%ED%A1%BC%A5%C9&file=RMC%2D1%2E2%2E1%2Dwin32%2DOpenRTM%2Ezip&action=ATTACH
>
>
> $B0J>e!$59$7$/$*4j$$CW$7$^$9!%(B
>
>
>
> 2013$BG/(B4$B7n(B28$BF|(B 17:48 $BD9_7(B $BE/Lo(B(Nagasawa Tetsuya) <t_nagasawa @ nuem.nagoya-u.ac.jp>:
>> OpenRTM$B%a!<%j%s%0%j%9%H$N3'MM(B
>>
>> $BL>8E20Bg3XBg3X1!=$;N2]Dx$ND9_7$H?=$7$^$9!%(B
>> OpenRTM-aist(C++) 1.0.2$B>e$G$N(BGUI$B%i%$%V%i%j(BQt$B$NMxMQ$K$D$$$F<ALd$,$"$j%a!<%k$5$;$F$$$@$?$-$^$7$?!%(B
>>
>> $B%;%s%5>pJs$r(BQt$B$rMQ$$$FI=<($5$;$?$$$H9M$(!$(BQt$B$N4IM}%/%i%9$G$"$k(BQApplication$B$H!$(B
>> QWidget$B$r7Q>5$7$?<+:n%/%i%9(BMyQt$B$N%]%$%s%?$r(BRTC$B$N%/%i%9$K2<5-$N$h$&$KDI2C$7$^$7$?!%(B
>> ------------------------------------------------------------------------------------------------------
>> class PointCloudViewer
>> : public RTC::DataFlowComponentBase
>> {
>> public:
>> /*!
>> * @brief constructor
>> * @param manager Maneger Object
>> */
>> PointCloudViewer(RTC::Manager* manager);
>> ///////////////////$BCfN,(B/////////////////////
>> public:
>>
>> QApplication *app; //Qt$B4IM}%/%i%9(B
>> myQt *window; //$B<+:n%/%i%9(B
>>
>> };
>> ------------------------------------------------------------------------------------------------------
>> $B$=$7$F(Bapp$B$H(Bwindow$B$K(Bnew$B1i;;;R$rMQ$$$F!$(BonInitialize()$B$G%$%s%9%?%s%9$r3d$jEv$F!$(B
>> onExecute()$B$+(Bcoil::Timer$B>e$G!$%$%Y%s%H=hM}4X?t$N(Bapp->processEvents()$B$r<B9T$5$;$h$&$H9M$($^$7$?!%(B
>> $B$7$+$7%S%k%I$ODL$k$N$G$9$,!$(BQt$B$N(BGUI$B$rA`:n$9$k$3$H$O$G$-$^$;$s$G$7$?!%(B
>>
>> $B$=$3$G(BonActivate()$B$G%$%s%9%?%s%9$r3d$jEv$F$?$H$3$m!$LdBj$J$/A`:n$G$-$?$N$G$9$,!$(B
>> $B%3%s%=!<%k>e$G2<5-$N(BWarning$B$,I=<($5$l$^$9!%(B
>> WARNING: QApplication was not created in the main() thread.
>>
>> QApplication$B$N%$%s%9%?%s%9$r(Bmain()$BFb$G:n @ .$7!$$=$N%"%I%l%9$r(BRTC$BFb$KEA$($l$P$$$$$N$G$O$J$$$+$H9M$($?$N$G$9$,(B
>> $B$=$NJ}K!$,$o$+$j$^$;$s!%(B
>>
>> $B-!(Bmain()$BFb$G:n @ .$7$?%/%i%9$r(BRTC$B%/%i%9Fb$GMxMQ$9$kJ}K!(B
>> $B-">e5-0J30$N!$$h$jNI$$(BOpenRTM$B>e$G$N(BQt$BMxMQJ}K!(B
>> $B$3$N(B2$BE@$N$I$A$i$+$*J,$+$j$K$J$kJ}$,$$$l$P!$$I$&$+$*=u$1$/$@$5$$!%(B
>> $B$=$l$G$O$h$m$7$/$*4j$$$7$^$9!%(B
>>
>>
>> --
>> $BL>8E20Bg3XBg3X1!9)3X8&5f2J5!3#M}9)3X @ l96EE;R5!3#9)3XJ,Ln(B
>> $B%a%+%H%m%K%/%9@)8f9V:B%b%S%j%F%#%7%9%F%`%0%k!<%WNkLZ8&5f<<(B
>> $B=$;N2]Dx(B $BD9_7!!E/Lo(B
>> Email: t_nagasawa @ nuem.nagoya-u.ac.jp Tel: 090-4233-3699
>>
>> Graduate School of Engineering, Nagoya University
>> Tetsuya Nagasawa
>>
>> _______________________________________________
>> openrtm-beginners mailing list
>> openrtm-beginners @ openrtm.org
>> http://www.openrtm.org/mailman/listinfo/openrtm-beginners
>>
>
> _______________________________________________
> openrtm-beginners mailing list
> openrtm-beginners @ openrtm.org
> http://www.openrtm.org/mailman/listinfo/openrtm-beginners
>



-- 
$B0BF#7D><!wFHN)9T@/K!?M;:6H5;=QAm9g8&5f=j(B $BCNG=%7%9%F%`8&5fItLg(B
    $BE}9gCNG=8&5f%0%k!<%W(B $B<gG$8&5f0w(B, $BGn;N(B($B9)3X(B)
    $B")(B305-8568 $B$D$/$P;TG_1`(B1-1-1 $BCf1{Bh(B2
    e-mail: n-ando @ aist.go.jp, web: http://staff.aist.go.jp/n-ando
    OpenRTM-aist: http://www.openrtm.org

Noriaki Ando, Ph.D.
    Senior Research Scientist, RT-Synthesis R.G., ISRI, AIST
    AIST Tsukuba Central 2, Tsukuba, Ibaraki 305-8568 JAPAN
    e-mail: n-ando @ aist.go.jp, web: http://staff.aist.go.jp/n-ando
    OpenRTM-aist: http://www.openrtm.org


More information about the openrtm-users mailing list