apollo 调试 rosserial
一、准备
1、 进入apollo docker环境 执行
bash docker/scripts/dev_start.sh -l -t dev_5
bash docker/scripts/dev_into.sh
后面的dev_5 是之前执行保存docker环境
docker ps #获取commitID 2d18dd8819a6
docker commit 2d18dd8819a6 apolloauto/apollo:dev_5
2、准备好rosserial测试硬件,arduino或者stm32 ros_lib示例,我们用hello world 例子
通过发布节点chatter的String消息,所以需要在apollo docker里面建一个工作空间,创建一个listener包。
listener.cpp内容如下
#include "ros/ros.h"
#include "std_msgs/String.h"
// 回调函数
void chatterCallback(const std_msgs::String::ConstPtr& msg)
{
ROS_INFO("I heard: [%s]", msg->data.c_str());
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "listener");
ros::NodeHandle n;
// 告诉master需要订阅chatter topic消息
ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);
ros::spin(); // 自循环
return 0;
}
注意编译的时候用
catkin_make_isolated
如果用catkin_make 会提示错误
二、下载rosserial到你的工作空间
git clone https://github.com/ros-drivers/rosserial.git
因为下载默认版本是jade-devel,而apollo的版本是 indigo版本,否则,执行会出错。
所以执行如下
cd src/rosserial
git branch -a
git chcekout origin/indigo-devel
git checkout indigo-devel
git branch -a
git pull
三、执行roscerial 测试命令
先执行listrener节点后,再执行如下([ chmod 777 /dev/ttyACM0])
rosrun rosserial_python serial_node.py /dev/ttyACM0
会提示如下错误 ImportError: No module named cli.find_pkg
四、解决问题
1、安装 serial module
sudo apt install python-pip //python2
sudo apt install python3-pip //python3
2、安装rosserial
sudo apt-get install ros-indigo-rosserial
至于为何还需要安装ros-indigo-rosserial ,上面不是已经有rosserial了吗?这个问题我也搞不清楚,反正安装之后就测试正常。