Posted on  Updated on 

ros车基本学习(基于讯飞车)

ros是什么(个人理解)

ros是个机器人操作系统,可以在上面实现对机器人的操作,好比一个工作台,别人给你造好,直接使用上面的工具方便造自己的作品.

我为什么学ROS

竞赛需要,智能车讯飞比赛及人工智能比赛甚至电赛控制类赛题也能用到

系统是乌班图18的系统。

1
2
3
4
5
6
//安装C加加编译器
sudo apt-get install g++
//安装python解释器
sudo apt-get install python
//安装vim文本编译器
sudo apt install vim

代码运行实例(c++)

1
2
3
4
5
6
7
8
9
10
11
12
//终端输入,在主目录下创造一个test的文件夹。
mkdir test
//创建一个名为hello的点cpp文件。
touch hello.cpp
//在文件中写入内容
//写完后保存关闭
//打开终端输入,编译C加加文件
g++ hello.cpp -o hello
//执行可执行文件。
./hello
//同理。执行python文件
python hello.py

ros安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//添加ros软件源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

//添加密匙
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

//安装ros
sudo apt update
sudo apt install ros-melodic-desktop-full

//初始化rosdep
sudo rosdep init
rosdep update

//设置环境变量
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

//安装rosinstall
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

鱼香ros一键安装

1
wget http://fishros.com/install -O fishros && . fishros 

小乌龟实例

1
2
3
4
5
6
//启动ros mastre
roscore
//启动小海龟仿真器
rosrun turtlesim turtlesim_node
//启动海龟控制节点
rosrun turtlesim turtle_teleop_key

创建工作空间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

//编译工作空间
cd catkin_ws/
catkin_make

//设置环境变量
source devel/setup.bash

//检查环境变量
echo $ROS_PACKAGE_PATH

功能包创建与编译

1
2
3
4
5
6
7
8
9
10
//创建功能包
cd ~/catkin_ws/src
catkin_create_pkg my_package_name rospy roscpp std_msgs geometry_msgs turtlesim

//编译
cd catkin_ws/
catkin_make

//刷新环境变量
source ~/catkin_ws/devel/setup.bash

C++编译配置<cmakelists.txt>
1
2
add_executable(${PROJECT_NAME}_node src/my_package_name_node.cpp)
target_link_libraries(${PROJECT_NAME}_node ${catkin_LIBRARIES})

自定义消息
1.在功能包文件夹内创建msg文件夹,并新建Person.msg文件,在里面写入

1
2
3
4
5
6
7
string name
uint8 age
uint8 sex

uint8 unknown = 0
uint8 male = 1
uint8 female = 2

2.在package.xml文件内添加依赖:

1
2
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

3.在CMakeLists.txt内加入:
1
2
3
4
5
6
7
8
9
 add_message_files(
FILES
Person.msg
)

generate_messages(
DEPENDENCIES
std_msgs
)

并把
1
#  CATKIN_DEPENDS geometry_msgs roscpp rospy std_msgs turtlesim

改为
1
CATKIN_DEPENDS geometry_msgs roscpp rospy std_msgs turtlesim message_runtime

系统关机及重启

1
2
3
4
//关机
shutdown -h now
//重启
sudo reboot

ctrl all+T打开新的终端


摄像头参数命令
1
qv4l2



launch文件启动rviz

每次启动rviz都要设置订阅的话题、点云大小等等机械化的设置,为了方便快捷的操作,把rviz的设置写入launch文件内,就可以一键启动了。
1.先启动需要运行的节点,再启动一个rviz;
2.设置好订阅的话题、点云大小、坐标轴等需要用到的设置
3.点击左上角的file,选择另存为到一个指定地址(功能包文件夹下创建config文件夹,rviz配置文件放里面);
4、写入launch文件

1
2
3
4
<launch>
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find my_package)/config/path_to_your_rviz_config_file.rviz" />
</launch>

其中 find my_package 为你的功能包名,path_to_your_rviz_config_file.rviz为rviz文件名