ROS#06Node遊んでみよう

これからはturtlesim パッケージを遊んでみようと思います。このPackageはもうすでにインストールされていると思います。ではまずroscore を実行しROS-Systemを立ち上がりましょう。そうすることによって、ROS Master、ROS Parameter Server、rosout logging nodeがStartになります。

http://wiki.ros.org/roscore

これだけでもパソコンのFANは回り始めてます…

$ roscore
… logging to /home/abc/.ros/log/fd8f51d6-c312-11eb-99eb-000c292e9587/roslaunch-abc-virtual-machine-25992.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://abc-virtual-machine:46779/
ros_comm version 1.14.11


SUMMARY
========

PARAMETERS
* /rosdistro: melodic
* /rosversion: 1.14.11

NODES

auto-starting new master
process[master]: started with pid [26009]
ROS_MASTER_URI=http://abc-virtual-machine:11311/

setting /run_id to fd8f51d6-c312-11eb-99eb-000c292e9587
process [master]: started with pid [26009]
ROS_MASTER_URI=http://abc-virtual-machine:11311/

setting /run_id to fd8f51d6-c312-11eb-99eb-000c292e9587
process[rosout-1]: started with pid [26021]
started core service [/rosout]

Nodeの情報もらうにはrosnodeコマンドがあります。

http://wiki.ros.org/rosnode

$ rosnode

rodnode list でいま走ってるNodeがリストさてています。いまはroscoreしかRunしていませんので/rosoutだけが出力されるのも当たり前です。

$ rosnode list
/rosout

$ rosnode info /rosout
——————————————————————————–
Node [/rosout]
Publications:
* /rosout_agg [rosgraph_msgs/Log]

Subscriptions:
* /rosout [unknown type]

Services:
* /rosout/get_loggers
* /rosout/set_logger_level


contacting node http://abc-virtual-machine:34735/ …
Pid: 26021

rosnode pingコマンドから、Nodeとの通信は確立されているかどうかも確認できます。

$ rosnode ping /rosout
rosnode: node is [/rosout]
pinging /rosout with a timeout of 3.0s
xmlrpc reply from http://abc-virtual-machine:34735/ time=0.339031ms
xmlrpc reply from http://abc-virtual-machine:34735/ time=1.698017ms
xmlrpc reply from http://abc-virtual-machine:34735/ time=1.945019ms
xmlrpc reply from http://abc-virtual-machine:34735/ time=1.811981ms
xmlrpc reply from http://abc-virtual-machine:34735/ time=1.681805ms

では、実際新しいNodeを走りましょう。かめさんが出てきたらもうOKです!

$ rosrun turtlesim turtlesim_node

前の記事では、NodeではPublications (topics), Subscriptions (topics),

と Services (srv) があり、それらのNodeには独自でかぶらないの名前があります。

まずrosnode info /turtlesimで先立ち上げて亀さんの情報をみてみましょう。 

rosnode info /turtlesim
——————————————————————————–
Node [/turtlesim]
Publications:
* /rosout [rosgraph_msgs/Log]
* /turtle1/color_sensor [turtlesim/Color]
* /turtle1/pose [turtlesim/Pose]

Subscriptions:
* /turtle1/cmd_vel [unknown type]

Services:
* /clear
* /kill
* /reset
* /spawn
* /turtle1/set_pen
* /turtle1/teleport_absolute
* /turtle1/teleport_relative
* /turtlesim/get_loggers
* /turtlesim/set_logger_level


contacting node http://abc-virtual-machine:44331/ …
Pid: 26218
Connections:
* topic: /rosout
    * to: /rosout
    * direction: outbound (39711 – 127.0.0.1:37198) [24]
    * transport: TCPROS

次はKeyboardの矢印ボタンで亀さんを動かしてみましょう。

$ rosrun turtlesim turtle_teleop_key
Reading from keyboard
—————————
Use arrow keys to move the turtle. ‘q’ to quit.

rostopic list コマンドではRos SystemにはどんなTopicがあるかが一覧できます。

$ rostopic list
/rosout
/rosout_agg
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

先Keyboardの矢印ボタンで亀さんをうごいてみましたよね。このNodeを情報みて、カミさんにおくるcmd_velを操作などしてみたいと思います。

$ rosnode info /teleop_turtle
——————————————————————————–
Node [/teleop_turtle]
Publications:
* /rosout [rosgraph_msgs/Log]
* /turtle1/cmd_vel [geometry_msgs/Twist]

Subscriptions: None

Services:
* /teleop_turtle/get_loggers
* /teleop_turtle/set_logger_level


contacting node http://abc-virtual-machine:37947/ …
Pid: 26555
Connections:
* topic: /rosout
    * to: /rosout
    * direction: outbound (56045 – 127.0.0.1:51890) [10]
    * transport: TCPROS
* topic: /turtle1/cmd_vel
    * to: /turtlesim
    * direction: outbound (56045 – 127.0.0.1:51888) [12]
    * transport: TCPROS

/turtle1/cmd_velをTerminalでいまどんなコマンドを与えがカミさんに渡してるか見えますね。

$ rostopic echo /turtle1/cmd_vel
linear:
  x: 0.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: -2.0

最後はMessageをPubしたいと思います。

まず /turtle1/cmd_vel がどんなTopic typeなのか調べてみましょう。

$ rostopic type /turtle1/cmd_vel
geometry_msgs/Twist

そしてgeometry_msgs/Twistの中身を見てみましょう。

$ rosmsg show geometry_msgs/Twist
geometry_msgs/Vector3 linear
  float64 x
  float64 y
  float64 z
geometry_msgs/Vector3 angular
  float64 x
  float64 y
  float64 z

そのメッセージの中身を説明したくれた方がいます↓

http://dailyrobottechnology.blogspot.com/2014/12/73-twist.html

時計方向に0.5ラジアン毎秒で回転しながら、0.1メートル毎秒で移動します。

geometry_msgs/Vector3 linear  は並進方向の速度を意味し、それぞれ x, y, z 方向の速度をメートル毎秒で与えます。

また、geometry_msgs/Vector3 angular  は回転方向の速度を意味し、それぞれ x, y, z 軸回りの回転速度をラジアン毎秒で与えます。

数学の復習ですねーー

https://www.geisya.or.jp/~mwm48961/koukou/mobile/s2do01_m.htm

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist   1 ‘{linear: {x: 0.1, y: 0, z: 0}, angular: {x: 0, y: 0, z: -0.5}}’
Footer_Basic

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする