基于导引点预测的视觉导航系统使用说明(二):各种功能模块的编译和运行

这一部分主要介绍视觉导航系统中各个功能模块的编译和使用,其中包括command_center(命令模块),Trans_msg(消息转换模块),Planner(局部路径规划模块),PathTracking(路径跟踪模块),以上模块分别对应资源包中的那几个文件夹下的C++工程,这些都需要用到Qt来编译。此外,还有一个文件夹Map是放各种地图的。

1 Qt的安装和使用

1.1Qt的安装

安装请参考:

https://blog.csdn.net/qq_44020228/article/details/125057917

1.2Qt的使用

1.2.1用终端打开Qt

我们的项目需要用终端打开Qt,这样才能加载环境变量。
设置你的~/.bashrc使用指令来打开Qt。
做法如下:
1.将这段指令粘贴到~/.bashrc

alias qt="/home/swc/Qt5.14.2/Tools/QtCreator/bin/qtcreator.sh"

其中qt=" "中改成你qtcreator.sh所在的目录,上面那段指令的意思是你在终端输入“qt”即可运行qtcreator.sh这个文件打开Qt。
2. 保存后source一下~/.bashrc,打开终端输入指令打开Qt:

qt

2 使用Qt编译C++工程

2.1 编译command_center工程

在这里,我们以command_center工程为例进行说明。

2.1.1 打开工程

1.通过终端的方式打开Qt,打开command_center.pro文件打开工程:
基于导引点预测的视觉导航系统使用说明(二):各种功能模块的编译和运行_第1张图片
2.projects->Bulid&Run->build 取消勾选框
基于导引点预测的视觉导航系统使用说明(二):各种功能模块的编译和运行_第2张图片

2.1.2 修改command_center.pro文件的依赖

修改.pro文件,把一些东西(红色框框内)改成你自己的路径
基于导引点预测的视觉导航系统使用说明(二):各种功能模块的编译和运行_第3张图片

2.1.2 重新编译项目

右键->rebuild,编译成功即可,如果报错请留言(一般是依赖没写对)。

2.2 编译Planner工程

其他步骤与2.1中相同,不同的地方在于.pro文件的修改不同:

2.2.1 Planner.pro文件修改

这里好像可以不用改,先直接编译,如果报错,对照下面框框里的依赖有没有。如果报某一项没有,先注释掉该项后再编译,如果不报错了则说明可以不需要该项依赖,如果还报错则需要安装相应的库(安装之前请先留言博主,看是否是必须依赖,避免安装采坑)
基于导引点预测的视觉导航系统使用说明(二):各种功能模块的编译和运行_第4张图片

2.3 编译PathTracking工程

该工程的做法和Planner工程一模一样。

2.4 编译Trans_msg工程

该工程内容有点多,因为该工程用于发布carla地图,CARLA中有很多地图,目前该项目提供Town01,Town02,Town05,Town07这四个地图。具体做法如下:

2.4.1更换地图

打开项目后在trans_msg.cpp文件下替换地图的路径,分别需要替换的地方如下:

  1. 代码第10,11行:
town_num = 7; //城镇的编号
map = cv::imread("/home/swc/Desktop/owx/carla/control_plan/Trans_msg/Town0" + to_string(town_num) + ".jpg"); //将前面的路径改成自己的
  1. 代码第152行:
map_go=cv::imread("/home/swc/Desktop/owx/carla/control_plan/Trans_msg/tpTown07.jpg"); //换图片的路径
  1. 代码第162行:
map_go=cv::imread("/home/swc/Desktop/owx/carla/control_plan/Trans_msg/tpTown07.jpg");//换图片路径

2.4.2重新编译

路径换完后与上面Planner工程一样重新编译,以后想换地图都需要重新编译。

3 通过shell文件运行项目。

所有的shell文件都在shell文件夹下面。

3.1start.sh文件

.sh文件是总的启动文件,用于启动各个模块的.sh。请留意代码中的注释说明

#!/bin/bash
shell_path="/home/swc/Desktop/owx/carla/shell/" #换成你自己的shell文件夹的路径

gnome-terminal 	--window -e "bash -c ${shell_path}/COMMAND_CENTER.sh;exec bash" \  #用于启动COMMAND_CENTER.sh
		--tab -e "bash -c ${shell_path}/Trans.sh;exec bash" \ #用于启动Trans.sh
	       	--tab -e "bash -c ${shell_path}/PLANNER.sh;exec bash" \ #用于启动PLANNER.sh
	       	--tab -e "bash -c ${shell_path}/TRACKER.sh;exec bash" \#用于启动TRACKER.sh

3.2COMMAND_CENTER.sh文件

用于启动command_center项目。请留意代码中的注释说明

#!/bin/bash
program_name="F2_Ctrl_Puber_End"

printf "\e]2;command_center\a"

source /opt/ros/melodic/setup.bash #ROS路径


cd /home/swc/Desktop/owx/carla/control_plan/command_center/bin/ #这是2中编译的各个工程编译后的可执行文件的位置,换成你的路径

ps -ef|grep -w $program_name |grep -v "grep"
if [ $? -ne 0 ]
then
	./$program_name
	sleep 2
	ps -ef|grep $program_name |grep -v "grep"
	if [ $? -eq 0 ]
	then
	echo "$program_name start sucess by shell!"
	else
	echo "$program_name start failed"
	fi
else
	echo "$program_name is already runing!"
fi

3.3Trans.sh文件

用于启动Trans_msg工程,这个文件与其他文件不同,该工程通过Qt编译后生成的可执行文件名为Autocar_cpp在这个目录下/xyx/control_plan/Trans_msg,需要将该执行文件替换/xyx/control_plan/Trans_msg/bin目录下的Trans_msg文件。做法如下:

  1. 删除/xyx/control_plan/Trans_msg/bin目录下的Trans_msg文件。
  2. 将目录/xyx/control_plan/Trans_msg下的Autocar_cpp重命名为Trans_msg后复制到/xyx/control_plan/Trans_msg/bin目录下。
#!/bin/bash
program_name="Trans_msg"

printf "\e]2;%s\a" $program_name

source /opt/ros/melodic/setup.bash

cd /home/swc/Desktop/owx/carla/control_plan/Trans_msg/bin/  #这个工程你需要用qt重新编译,然后换成你的路径

ps -ef|grep -w $program_name |grep -v "grep"
if [ $? -ne 0 ]
then
	./$program_name
	sleep 2
	ps -ef|grep $program_name |grep -v "grep"
	if [ $? -eq 0 ]
	then
	echo "$program_name start sucess by shell!"
	else
	echo "$program_name start failed"
	fi
else
	echo "$program_name is already runing!"
fi

3.4TRACKER.sh文件

用于启动PathTracking工程,请留意代码中的注释说明。

#!/bin/bash
program_name="Tracker"

printf "\e]2;%s\a" $program_name

source /opt/ros/melodic/setup.bash

cd /home/swc/Desktop/owx/carla/control_plan/PathTracking/bin/  #这个工程你需要用Qt重新编译,然后换成你的路径

ps -ef|grep -w $program_name |grep -v "grep"
if [ $? -ne 0 ]
then
	./$program_name
	sleep 2
	ps -ef|grep $program_name |grep -v "grep"
	if [ $? -eq 0 ]
	then
	echo "$program_name start sucess by shell!"
	else
	echo "$program_name start failed"
	fi
else
	echo "$program_name is already runing!"
fi

3.5PLANNER.sh文件

用于启动Planner工程,请留意代码中的注释说明。

#!/bin/bash
program_name="Planner"

printf "\e]2;%s\a" $program_name

source /opt/ros/melodic/setup.bash
#export ROS_HOSTNAME=wrc
#export ROS_MASTER_URI=http://10.42.0.176:11311

cd /home/swc/Desktop/owx/carla/control_plan/Planner/bin/ #这个工程你需要用Qt重新编译,然后换成你的路径

ps -ef|grep -w $program_name |grep -v "grep"
if [ $? -ne 0 ]
then
	./$program_name
	sleep 2
	ps -ef|grep $program_name |grep -v "grep"
	if [ $? -eq 0 ]
	then
	echo "$program_name start sucess by shell!"
	else
	echo "$program_name start failed"
	fi
else
	echo "$program_name is already runing!"
fi

3.6运行

修改完上述shell文件后在终端运行如下指令即可运行所有功能模块。

./start.sh

运行成功如图所示:

你可能感兴趣的:(qt,开发语言)