JetBrains IDEA/Clion/Client + ROS 远程开发环境搭建

目标群体

本往篇适合喜欢JetBrains家产品的用户,通过Windows或Mac远程在Ubuntu上进行Ros开发。

方案

JetBrains Client + Ubuntu + Clion Linux

  1. 因Clion运行在Ubuntu端,故对Ubuntu的配置要求较高
  2. 暂时未在树莓派上实现,Jetbrains Client是JB家刚出的Beta功能,似乎对arm支持不好?
  3. 如无以上两问题,该方案是力推方案。
    已已已解决树莓派无法运行JB Client的问题,请见:https://blog.csdn.net/chike0039/article/details/122668692

IDEA + Ubuntu

1. 我当前选用的方案,因为我没有除了树莓派没有一个强的Ubuntu主机,而树莓派暂未配置完成JetBrains的远程开发功能;

  1. 方案缺陷,只能使用Python开发,不能使用C++,因为当前我主要使用Python,Clion的python版本是无法实现远程开发的,所以这种折衷方案我还是倒向了Python,Clion也就没有完全研究透彻。

工具

必要

ROS:因为ubuntu使用的版本为18.04,故ROS版本选择melodic。

可选

JB工具

  1. JetBrains IDEA Utimate:需要安装python插件;
  2. JetBrains Client:2021.3之后推出的RemoteDevelopment功能;

系统

  1. Docker + ubuntu 18.04:docker pull ubuntu:18.04 拉取即可,搭配JB Client;
  2. Ubuntu 18.04 / 20.04:可使用虚拟机、主机、云服务器,搭配JB Client 或 JB IDEA;
  3. JetBrains Space:通过JB官网注册,新建仓库那可使用,,搭配JB Client;

系统准备

Dockers

安装docker略,拉取ubuntu 18.04镜像:

docker pull ubuntu:18.04

使用root用户进入ubuntu,注意商品映射,这里推荐kitematic,是docker的可视化管理工具,因为我用的mac,在镜像起来之后再修改端口映射实在太费劲,有了kitematic就舒服多了:

# 大致解释下,5901和2是用于vnc显示的端口,6022自然是映射ssh的端口
docker run -itd -u root -w /root --privileged --hostname=ubuntu -p 5901:5901 -p 5902:5902 -p 6022:22 --name ubuntu ubuntu:18.04

搭建vnc环境:

apt-get install xfce4 vnc4server xrdp -y
# 执行vncserver后设置密码
vncserver
# 修改~/.vnc/xstartup
vim xstartup
# 填入以下内容
cat xstartup

#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP" &
unset SESSION_MANAGER
unset DBUGS_SESSION_BUS_ADDRESS
startxfce4 &

# 杀掉vncserver的进程
vncserver -kill :1
# 重启vncserver并设置分辨率
vncserver -geometry 1920x1200 :1
# :1对应的端口为5901(5900 + 1),也可使用:2,对应端口5902
# 再使用vnc工具,通过127.0.0.1:1即可连接ubuntu的桌面了
# 这里主要用于使用ros相关的GUI工具

树莓派

启动盘制作Mac版

Win版的请自行百度,教程一堆。

# 查看U盘地址
diskutil list
# 格式化U盘
diskutil partitionDisk /dev/disk2 MBR FAT32 UNTITLED 0b
# 卸载
diskutil unmountDisk /dev/disk2
# 烧录
sudo dd bs=4m if=/Downloads/ubuntu-20.04.1-preinstalled-server-arm64+raspi.img of=/dev/disk2
# 新建ssh空文件

参考:Mac 制作 树莓派4B+系统 安装ubuntu系统

ROS环境配置

进入ubuntu之后,先修改源,我这里试的是163源最快,注意源与系统版本、硬件配置相关,以下是x_86/18.04对应的源,其它源请自行百度:

cat  /etc/apt/sources.list

deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse

apt-get update && apt-get upgrade

搭建ssh环境:

apt-get install openssh-server
# 修改配置文件,将PermitRootLogin值修改为yes
vim /etc/ssh/sshd_config

# 启动ssh
/etc/init.d/ssh start

# 这里我没研究如何让ssh自启,systemctl是用不了的

安装最新版的cmake:

# 这里我不确定原系统是否带有cmake,先卸载掉吧
apt-get remove cmake
cd /usr/local
wget https://cmake.org/files/v3.20/cmake-3.20.6-linux-x86_64.tar.gz
tar zxf cmake-3.20.6-linux-x86_64.tar.gz
mv cmake-3.20.6-linux-x86_64 cmake-3.20.6
ln -s /usr/local/cmake-3.20.6/bin/* /usr/bin/
cmake --version

开始搭建ROS,更详细的可参考树莓派4b安装带桌面的ubuntu18.04 server和ROS melodic系统,我一开始是在树莓派上鼓捣的:

sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
apt-get update
apt-get install ros-melodic-desktop-full
apt-get install ros-melodic-rqt*
apt-get install python-rosinstall
apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
# init这一步可能会出现问题,参考https://blog.csdn.net/qq_36458461/article/details/106532229
rosdep init
rosdep update

初始化一个测试项目:

cd ~
mkdir -p ros/untitled/src
cd ros/untitled
catkin_make
cd src
catkin_create_pkg hehe roscpp rospy std_msgs

JB配置

Client远程配置

安装2021.3之后版本的JetBrains产品,我用的是Idea,也可以使用JetBrains Client,然后通过Remote Development功能连接到Ubuntu服务器,注意Docker的ssh端口是6022:
image.png
image.png
这里注意,CLion下载后就退出,同时需要将ubuntu上的jetbrains进程杀掉,可使用下述命令:

ps -ef| grep -v grep| grep -i jetbrains| awk ‘{print $2}’| xargs kill -9

或者也可以通过top命令,找到ld-linux-x86-64对应的pid,然后kill -9 pid杀掉该进程。

到ubuntu中配置下clion的环境变量,具体方法:

# 先将系统默认/bin/sh由dash转为bash,执行下述命令,然后选择no
sudo dpkg-reconfigure dash
# 这里可能需要写一个工具,在生成项目时自动把环境加入到这里来
# 这里可能地址会有点小差异,请各位自己寻找
sed -i '/LAUNCHER_PATH=/a\\nsource /opt/ros/melodic/setup.bash\nsource "$2/devel/setup.bash"' ~/.cache/JetBrains/RemoteDev/dist/b7170a8872397_CLion-2021.3.2/bin/remote-dev-server.sh

重新打开clion,设置python解释器路径:
image.png
完成后,看pip包中是否包含rospy,有则正确无则错:
image.png
在ubuntu中执行bash /yourProjectPath/devel/setup.bash,然后执行/usr/bin/env,会打印出当前窗口所有的环境变量,将所有的变量复制,换行符以;号替换,形成环境变量字符,将该字符粘贴到CLion中:
image.png
进入clion之后配置如下:
image.png
image.png

IDEA配置

首先需要在Ubuntu服务器上配置Python环境变量,否则IDEA启动后无法直接读取Python的ROS库位置,导致代码import警报,即使后期在IDEA中配置环境变量,可以正常执行代码但依旧会出现提示的警告,添加的方法是在已有的python初始库文件夹中加入.pth文件,文件中写上ROS的python库路径,给个参考如下:

# 在已有python库路径下添加.pth文件,python会将其初始化为PYTHONPATH,放入sys.path中
echo "/opt/ros/noetic/lib/python3/dist-packages" > /usr/lib/python3/dist-packages/ros.pth 

之后需要配置Python执行的环境变量,否则会报“WARNING: cannot load logging configuration file, logging is disabled”,方法如下:
找到Run/Debug Configurations -> Edit configuration templates -> python -> environment variables,在其中粘入Ubuntu的环境变量,获取方式脚本如下,直接粘到命令行中复制结果粘进来就行了:

/usr/bin/env| grep -ivP “ls_colors|termcap”| tr -t ‘\n’ ‘;’

大功告成

image.png

参考

clion+ros开发环境的搭建
ROS setup tutorial

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值