Sp-puck入门教程-10.Sp-puck上运行ROS节点

ROS Kinetic已集成在Sp-puck系统中。

为在Sp-puck中运行基于CPP和Python开发的ROS节点,可用于通信系统基于无线远程控制一章中所示的第三种架构(计算机与Sp-puck建立WiFi连接,然后Sp-puck负责根据从计算机控制器接收到的数据通过I2C控制机器人);更详细的架构如下所示:

epuck2-ros-schema.png初始配置

Sp-puck与计算机(PC)应该处于同一个局域网内。

Sp-puck的ROS工作区位于~/rosbots_catkin_ws/

cd ~/rosbots_catkin_ws/

ROS驱动源码位于

cd ~/rosbots_catkin_ws/src/epuck_driver_cpp/

获取最新ROS源码

最新版本的e-puck2版本ROS节点可以从git下载:

git clone -b pi-puck https://github.com/gctronic/epuck_driver_cpp.git

要更新到最新版本,请按照下列步骤操作:

cd ~/rosbots_catkin_ws/src/

rm -R -f epuck_driver_cpp

git clone -b pi-puck https://github.com/gctronic/epuck_driver_cpp.git

#或者

git clone -b pi-puck http://mirror.ghproxy.com/https://github.com/gctronic/epuck_driver_cpp.git

cd ~/rosbots_catkin_ws/

catkin_make --only-pkg-with-deps epuck_driver_cpp

 运行roscore

在树莓派上启动e-puck2 ROS节点之前,请发出以下命令:

分别查看树莓派和主节点PC的ip地址

sudo ifconfig

配置网络

echo "export ROS_MASTER_URI=http://192.168.11.125:11311" >> ~/.bashrc

echo "export ROS_HOSTNAME=192.168.11.125" >> ~/.bashrc

source ~/.bashrc

其中roscore-ip是运行的机器的 IProscore

然后开始roscore发出roscore

运行ROS节点

在Sp-puck上启动e-puck2 ROS节点之前,请发出以下命令:

export ROS_IP=sppuck-ip

export ROS_MASTER_URI=http://roscore-ip:11311

其中

sppuck-ip是Sp-puck扩展的IP,

roscore-ip是运行机器的IP

(如果直接在Sp-puck上运行,则 roscore可以是相同的IP)。

roscore

要启动e-puck2 ROS节点,请发出以下命令:

roslaunch epuck_driver_cpp epuck_minimal.launch debug_en:=true ros_rate:=20

ros-e-puck2_.jpg

测试

您可以通过简单地显示某个主题发布的消息来测试机器人和计算机之间的通信是否真正正常工作,例如:

rostopic echo /proximity0

您可以通过发出命令来获得所有主题的列表:

rostopic list

rostopiclist.png

使机器人直接向前移动

rostopic pub -1 /mobile_base/cmd_vel geometry_msgs/Twist -- '[4.0, 0.0, 0.0]' '[0.0, 0.0, 0.0]'

原地旋转机器人

rostopic pub -1 /mobile_base/cmd_vel geometry_msgs/Twist -- '[0.0, 0.0, 0.0]' '[0.0, 0.0, 1.0]'

更改LED状态

rostopic pub -1 /mobile_base/cmd_led std_msgs/UInt8MultiArray "{data: [LED1, LED3, LED5, LED7]}"

rostopic pub -1 /mobile_base/cmd_led std_msgs/UInt8MultiArray "{data: [1, 1, 1, 1]}"

rospub.png

Python版本ROS

Python版本可以在这里找到:

https://github.com/yorkrobotlab/pi-puck-ros