1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > ROS 树莓派小车制作(一) ——ROS “点灯”

ROS 树莓派小车制作(一) ——ROS “点灯”

时间:2020-07-23 22:21:19

相关推荐

ROS 树莓派小车制作(一) ——ROS “点灯”

ROS 树莓派小车制作(一) ——ROS “点灯”

一、硬件准备

1.树莓派开发板(本人使用的版本为树莓派3b+)。

2.LED灯(没有的话,可以使用万用表测下IO的电平)。

3.显示屏(没有的话,可以使用vnc或者远程桌面)。

二、详细步骤

1.安装树莓派系统Raspbian

这个在网上有许多教程,这这里不详细赘述。

2.在树莓派上安装ROS环境

这个需要注意的是树莓派原生系统Raspbian安装ROS和Ubuntu mate安装ROS有一点区别,我刚开始按照Ubuntu mate的步骤去安装出现了一大堆无法解决的错误,最后在CSDN下面这篇博文的引导下,才正确完成了ROS的安装(我安装的时common版本的,没有多余的可视化的包)附上链接:

/qq_30267617/article/details/108252600

需要注意的是在这篇博文的第十步:

在编译roscpp时树莓派可能会死机,在网上查资料后,发现可能roscpp太大,四核一起运行编译会卡死,所以在这句命令后面加入-j2 采用双核编译,给cpu预留空间才能完成,即采用以下代码:

sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/melodic -j2

3.创建ROS工作空间

(1)在shell终端依次运行以下命令,创建工作空间:

mkdir -p ~/catkin_ws/srccd ~/catkin_ws/srccatkin_init_workspace

(2)创建完成后,回到工作目录根空间使用catkin_make命令编译整个空间:

cd ~/catkin_ws/catkin_make

(3)编译完成后,设置环境变量

echo “source /home/pi/catkin_ws/devel/setup.bash">>~/.bashrc

4.创建ROS功能包

进入工作空间,使用catkin_create_pkg命令创建功能包:`

cd ~/catkin_ws/srccatkin_create_pkg ROS_testPi std_msgs rospy roscpp

然后回到工作空间根目录进行编译,

cd ~/catkin_wscatkin_make

5.编写cpp程序来点亮LED灯

进入我们刚刚创建的功能包ROS_testPi文件的src目录下,编写cpp程序:

cd ~/catkin_ws/src/ROS_testPi/srcvi blink.cpp

这里我们使用vim编辑器来写cpp代码,没有安装vim编辑器的话可以执行以下代码来安装vim:

sudo apt-get install vim

进入vi编辑器后,编写cpp代码如下:

include "ros/ros.h"#include "std_msgs/Bool.h"#include<iostream>#include"wiringPi.h"#define LED 1void blink_callback(const std_msgs::Bool::ConstPtr& msg){if(msg->data==1){digitalWrite(LED,HIGH);ROS_INFO("LED ON");}if(msg->data==0){digitalWrite(LED,LOW);ROS_INFO("LED OFF");}}int main(int argc,char** argv){ros::init(argc,argv,"blink_led");ROS_INFO("Started Blink Node");wiringPiSetup();pinMode(LED,OUTPUT);ros::NodeHandle n;ros::Subscriber sub=n.subscribe("led_blink",10,blink_callback);ros::spin();}

6.修改用于编译代码的CMakeList.txt文件如下:

## Find catkin macros and libraries## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)## is used, also find other catkin packagesfind_package(catkin REQUIRED COMPONENTSroscpprospystd_msgs)## System dependencies are found with CMake's conventionsfind_package(Boost REQUIRED COMPONENTS system)set(wiringPi_include "/usr/include")## Specify additional locations of header files## Your package locations should be listed before other locationsinclude_directories(# include${catkin_INCLUDE_DIRS}${wiringpi_include}LINK_DIRECTORIES("usr/lib")add_executable(blink_led src/blink.cpp)target_link_libraries(blink_led${catkin_LIBRARIES} wiringPi))

修改完CMakeLists.txt后,回到工作空间编译ROS节点:

cd ~/catkin_wscatkin_make

7.运行代码

首先在打开一个终端运行roscore:

roscore

再打开一个终端,运行我们的刚刚写的点灯的ROS节点:

cd ~/catkin_wsrosrun ROS_testPi blink_led

随后运行rostopic命令发布我们的话题:

cd ~/catkin_wsrostopic pub /led_blink std_msgs/Bool 1rostopic pub /led_blink std_msgs/Bool 0

如果树莓派板子上的12脚接了个LED灯的话,这时便可以看到LED亮起和熄灭了。没有的话,可以用万用表测一下12脚的电平来验证代码的正确性。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。