ROS與Arduino學習(二)HelloWorld
Tutorial Level:准備工作
Next Tutorial:訂閱與發布
本節我們開始解讀第一個歷程,HelloWorld往是每一個編程者使用一個新的編譯環境的第一個程序,意味着睜眼看世界。
代碼如下:
/* * rosserial Publisher Example * Prints "hello world!" */ #include <ros.h> #include <std_msgs/String.h> ros::NodeHandle nh; std_msgs::String str_msg; ros::Publisher chatter("chatter", &str_msg); char hello[13] = "hello world!"; void setup() { nh.initNode(); nh.advertise(chatter); } void loop() { str_msg.data = hello; chatter.publish( &str_msg ); nh.spinOnce(); delay(1000); }
Tips 1 頭文件
兩個頭文件,一個是ros.h頭文件。這個是必需的。另一個是std_msgs/String.h頭文件,是消息程序包。用於節點之間發送消息功能。
Tips 2 聲明
1句柄
ros::NodeHandle nh;
生成節點句柄
2話題
ros::Publisher chatter("chatter", &str_msg);
發布一個話題,名字叫做chatter,消息內容
3消息對象
std_msgs::String str_msg;
聲明一個消息對象str_msg。其參數為data內容為消息內容。
Tips 3 發布消息
chatter.publish( &str_msg );
發布一個消息 話題.publish(&消息)
接下來要運行程序,和我們windows中操作一致,用串口就可以下載。下載進去我們做一個簡單的測試,用我們的PC看一下這個話題的消息。
- 運行roscore
$ roscore
- 新終端運行,/dev/ttyUSB0為Arduino設備
rosrun rosserial_python serial_node.py /dev/ttyUSB0
或
rosrun rosserial_python serial_node.py _port:=/dev/ttyUSB0
- 顯示主題chatter,獲取Arduino板反饋的信息
rostopic echo chatter
在此可能會遇到一些問題。參考下面處理
/dev/ttyUSB0 permission denied