當前位置:首頁 » 編程軟體 » catkin單獨編譯一個包

catkin單獨編譯一個包

發布時間: 2022-04-19 19:27:08

1. 怎麼把網上的源碼導入進ros

摘要 1、首先創建1個ros程序包,這個程序包相當於普通的c++工程的工程名:

2. 怎麼安裝catkin

1 先建立工作空間~/catkin_ws
參閱 下的創建工作空間
catkin_create_pkg basic std_msgs rospy

2 在工作空間~/catkin_ws下創建包pkg目錄basic
好處是通過創建包自動生成package.xml和CMakeLists.txt
可參閱

3 在工程目錄下建一個src子目錄和.py文件
源代碼文件:topic_publisher.py
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#!/usr/bin/env python
import roslib; roslib.load_manifest('basic')
import rospy
from std_msgs.msg import Int32
rospy.init_node('topic_publisher')
pub = rospy.Publisher('counter', Int32)
rate = rospy.Rate(2)
count = 0
while not rospy.is_shutdown():
pub.publish(count)
count += 1
rate.sleep()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
操作步驟如下
liao@liao-eagle:~/catkin_ws$ ls
build devel install src
liao@liao-eagle:~/catkin_ws$ cd src
liao@liao-eagle:~/catkin_ws/src$ ls
basic beginner_tutorials CMakeLists.txt first second
liao@liao-eagle:~/catkin_ws/src$ cd basic/
liao@liao-eagle:~/catkin_ws/src/basic$ ls
CMakeLists.txt package.xml src
liao@liao-eagle:~/catkin_ws/src/basic$ cd src
liao@liao-eagle:~/catkin_ws/src/basic/src$ vi topic_publisher.py
liao@liao-eagle:~/catkin_ws/src/basic/src$ chmod +x topic_publisher.py

4 回到~/catkin_ws目錄下,編譯程序
$ cd ~/catkin_ws
liao@liao-eagle:~/catkin_ws$ catkin_make

5 將當前工程加入到shell環境里去
liao@liao-eagle:~/catkin_ws$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
liao@liao-eagle:~/catkin_ws$ source ~/.bashrc

6 運行程序(需開兩個終端)
liao@liao-eagle:~/catkin_ws$ roscore
liao@liao-eagle:~/catkin_ws$ rosrun basic topic_publisher.py

7 通過rostopic查看相關信息
liao@liao-eagle:~/catkin_ws$ rostopic list
/counter
/rosout
/rosout_agg

3. 如何使用Google 的Cartographer SLAM演算法

0.安裝所依賴項
sudo apt-get install -y google-mock libboost-all-dev libeigen3-dev libgflags-dev libgoogle-glog-dev liblua5.2-dev libprotobuf-dev libsuitesparse-dev libwebp-dev ninja-build protobuf-compiler Python-sphinx ros-indigo-tf2-eigen libatlas-base-dev libsuitesparse-dev liblapack-dev
1.首先安裝ceres solver選擇版本1.11,路徑隨意
Git clone
cd ceres-solver-1.11.0/build
cmake ..
make –j
sudo make install

2.安裝 cartographer,路徑隨意
git clone
cd cartographer/build
cmake .. -G Ninja
ninja
ninja test
sudo ninja install

3.安裝cartographer_ros
谷歌官提供安裝比較繁瑣我原文件進行少許修改核代碼變修改編譯文件
載catkin_ws面src文件夾
git clone
catkin_ws面運行catkin_make即

4.數據載測試
2d數據概500M用迅雷載

3d數據8G左右同用迅雷載

運行launch文件即
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/cartographer_3d_deutsches_museum.bag
圖左側2d,右側3d

4. catkin工作空間編譯完需要刪除build文件夾嗎

C++貌似沒有提供刪除名稱空間的,但是可以縮短名稱空間的 比如 namespace m=shor::A::WE; 或者用using聲明和編譯來導入名稱空間 假如你真的要刪除。那麼可以打開C++源代碼,把創建的名稱空間都去掉,這很簡單

5. 為什麼.bashrc中export ros

[html] view plain
source /opt/ros/indigo/setup.bash

###### kobuki_slam

source /opt/ros/indigo/setup.bash
source /home/yhzhao/catkin_ws/devel/setup.bash
source /home/yhzhao/hl_ws/devel/setup.bash

#export ROS_PACKAGE_PATH=~/catkin_ws/src:$ROS_PACKAGE_PATH
export ROS_PACKAGE_PATH=~/catkin_ws/src:~/hl_ws/src:$ROS_PACKAGE_PATH
export ROS_WORKSPACE=~/hl_ws/src

alias sbpi='ssh [email protected]'
alias bpi_ros='export ROS_MASTER_URI=http://192.168.1.102:11311 && export ROS_HOSTNAME=192.168.1.123'
alias cdros='cd ~/catkin_ws/src'

declare -x TURTLEBOT_GAZEBO_MAP_FILE="/opt/ros/indigo/share/turtlebot_gazebo/maps/corridor.yaml"
declare -x TURTLEBOT_GAZEBO_WORLD_FILE="/opt/ros/indigo/share/turtlebot_gazebo/worlds/corridor.world"

export TURTLEBOT_BASE=kobuki
export TURTLEBOT_STACKS=nostack
export TURTLEBOT_3D_SENSOR=rplidar

###### slam_ws
source /opt/ros/indigo/setup.bash
source /home/yhzhao/slam_ws/devel/setup.bash

export ROS_PACKAGE_PATH=~/slam_ws/src:$ROS_PACKAGE_PATH
export ROS_WORKSPACE=~/slam_ws/src

#export ROS_HOSTNAME=192.168.1.111
#export ROS_IP=192.168.1.111

###### rgbd_slam
#source /opt/ros/indigo/setup.bash
#source /home/yhzhao/rgbdslam_ws/devel/setup.bash
#source /home/yhzhao/rgbdslam_ws/devel/setup.bash

#export ROS_PACKAGE_PATH=~/rgbdslam_ws/src:$ROS_PA#CKAGE_PATH
#export ROS_WORKSPACE=~/rgbdslam_ws/src

###### rtab_ws
#source /opt/ros/indigo/setup.bash
#source /home/yhzhao/slam_open_sources/ros_ws/devel/setup.bash

#export ROS_PACKAGE_PATH=/home/yhzhao/slam_open_sources/ros_ws/src:$ROS_PACKAGE_PATH
#export ROS_WORKSPACE=/home/yhzhao/slam_open_sources/ros_ws/src

#source ~/rosbuild_ws/setup.bash

在bashrc中進行上面設置的原因,主要是在每次啟動終端時,載入ros的配置變數,不然基本的ros指令就無法識別,也找不到對應包..
source 可以認為它是讀取每一個環境變數設置. 支持覆蓋重載..
ros一般在apt-get 安裝下是裝在/opt/ros/indigo/ 下面的, 可以認為它只安裝了頭文件和基本庫的 release版本, 如果我們需要下載對應的源碼, 最好在home文件夾下,創建
自己的工作空間, 再編譯. 按照source 的次序支持包覆蓋.
ROS_PACKAGE_PATH ros包查找的路徑.
ROS_WORKSPACE 工作路徑 . roscd 對應的位置.

6. ros 怎麼單獨編譯一個指定的包

切換到自己的ROS工作空間: $ cd ~/catkin_ws
如果你想編譯整個工作空間裡面的包:$ catkin_make
如果你只想編譯工作空間某一個包:$ catkin_make -DCATKIN_WHITELIST_PACKAGES= "包名"
例如:

7. ros中的節點用c++編寫的時候直接調用就可以了嗎

一、首先建一個包
我的工作空間catkin_ws事先建好了,路徑是/home/siat/catkin_ws
然後運行以下命令在src文件夾下建立test包
$ cd ~/catkin_ws/src
$ catkin_create_pkg test roscpp1212

注意在包的名字後加上一些基本的依賴,比如roscpp和rospy這樣就可以直接調用C++和Python節點了,這將會在CMakeLists.txt中出現
find_package(catkin REQUIRED COMPONENTS roscpp)11

注意如果沒有加依賴,而是直接運行
$ catkin_create_pkg test11

來創建包的,在CMakeLists.txt中是這樣的
find_package(catkin REQUIRED)11

在後面編譯C++節點的時候將會提示「對各種ros類下的函數未定義的引用」
二、編寫節點文件

8. solidwors生成urdf文件後,怎樣在ros中模擬

使用ros_qtc_plugin插件新建項目

使用插件新建項目Import ROS
Workspace選項僅新建工作空間導入現工作空間新建文件ROS面Package、Basic
Node等選項創建package節點、launch文件、urdf文件等
現我創建新catkin工作空間,並且面創建package

1、新建項目

文件——新建文件或項目選擇Import ROS Workspace——choose圖

填寫catkin工作空間名字位置圖

我Namecatkin工作空間文件夾名字相同(同)名catkin_new選擇瀏覽——創建文件夾創建名catkin_new文件夾圖按車再選擇打

現框詢問新建工作空間未初始化否執行初始化我選擇yes
相於執行catkin_init_workspace命令使工作空間初始化

點擊Generate Project File再點擊步
項目管理步驟配置版本控制系統我選擇完圖

建工作空間catkin_new空圖

2、創建package

接我工作空間創建新package
catkin_new面src右鍵單擊選擇添加新文件圖

選擇ROS——package——choose

填寫package名字test1
填寫作者(Authors)維護者(Maintainers)Qt環境部沒配置文支持請要用文否則新建package或者新建package面package.xml空文件
DependenciesCatkin欄填寫依賴通用C++寫節點需要添加roscpp依賴


點擊完

3、添加新節點

目前package空沒任何節點
我test1src文件夾右鍵單擊選擇添加新文件

選擇ROS——Basic Node——choose創建節點新建.cpp文件

節點名稱寫node1則名node1.cpp源文件

用ROS模板新建node1.cpp源文件圖自Hello World程序

4、編譯節點

讓編譯執行文件我需要編輯test1makefile圖
test1CMakeLists.txt加面幾行意思node1.cpp編譯名node1節點
add_executable(node1 src/node1.cpp)
target_link_libraries(node1
${catkin_LIBRARIES}
)
,

熱點內容
通過一個ip訪問兩台伺服器嗎 發布:2025-03-21 07:06:12 瀏覽:521
怎麼讓伺服器查不到我的ip地址 發布:2025-03-21 07:05:27 瀏覽:184
編譯器有什麼用 發布:2025-03-21 07:00:24 瀏覽:78
android百度雲盤 發布:2025-03-21 06:59:47 瀏覽:260
青雲存儲 發布:2025-03-21 06:50:03 瀏覽:403
王者榮耀有腳本嗎 發布:2025-03-21 06:50:00 瀏覽:805
c語言代碼運行 發布:2025-03-21 06:49:17 瀏覽:560
python打開文件夾下所有文件 發布:2025-03-21 06:44:34 瀏覽:951
oracle資料庫表連接 發布:2025-03-21 06:42:52 瀏覽:45
thinkphp獲取資料庫 發布:2025-03-21 06:42:09 瀏覽:50