Post

JetBrains IDE Setup

整理 CLion 与 PyCharm 的嵌入式、ROS、OpenCV 和代理环境配置

JetBrains IDE Setup

通用设置

运行与调试环境变量

CLion 和 PyCharm 的环境变量入口相同:进入运行 -> 编辑配置,在对应运行配置的环境变量中添加项目所需变量。动态库路径、代理等仅对当前运行配置生效的内容,统一在此处维护。

代理设置

在运行配置的环境变量中添加:

1
2
http_proxy=http://127.0.0.1:7897
https_proxy=http://127.0.0.1:7897

代理环境变量配置

CLion

51 单片机开发

安装插件

Alt text
通过https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py 下载get-platformio.py文件后使用python运行。随后在设置->语言和框架中设置PlatformIO的路径。
windows和linux稍有不同
Windows在C:/Users/UserName/.platformio/penv/Scripts/platformio
Linux在~/.platformio/penv/bin/platformio

官网链接:https://docs.platformio.org/en/latest/core/installation/methods/index.html

配置Shell命令

  • Windows在系统环境变量Path附加 C:\Users\UserName.platformio\penv\Scripts
  • Linux可通过在~/.profile中添加
1
export PATH=$PATH:$HOME/.local/bin

然后

1
2
3
ln -s ~/.platformio/penv/bin/platformio ~/.local/bin/platformio
ln -s ~/.platformio/penv/bin/pio ~/.local/bin/pio
ln -s ~/.platformio/penv/bin/piodebuggdb ~/.local/bin/piodebuggdb

或者直接

1
2
3
4
mkdir -p /usr/local/bin
ln -s ~/.platformio/penv/bin/platformio /usr/local/bin/platformio
ln -s ~/.platformio/penv/bin/pio /usr/local/bin/pio
ln -s ~/.platformio/penv/bin/piodebuggdb /usr/local/bin/piodebuggdb

官网链接:https://docs.platformio.org/en/latest/core/installation/shell-commands.html#piocore-install-shell-commands

编写程序

  • 选择芯片

Alt text
STC89C52为例
待环境构建完成后(第一次需下载文件有点慢)
在CMakeListsPrivate.txt文件中 Alt text
windows在include_directories后添加

1
2
include_directories("${ENV_HOME_PATH}/.platformio/packages/toolchain-sdcc/include")
include_directories("${ENV_HOME_PATH}/.platformio/packages/toolchain-sdcc/non-free/include")

linux在include_directories后添加

1
2
include_directories("$ENV{HOME}/.platformio/packages/toolchain-sdcc/share/sdcc/include")
include_directories("$ENV{HOME}/.platformio/packages/toolchain-sdcc/share/sdcc/non-free/include")

跳转到8052.h头文件中,将#include <8051.h>改为#include "8051.h"并添加#include "lint.h"
Alt text
跳转到8051.h头文件中,在开头添加上#include "lint.h"
Alt text
然后可正常编写程序。
注意,位定义和中断与keil不同!

烧录程序

PlatformIO 原生的烧录很慢,改为使用stcgal烧录。
首先,安装stcgal

1
pip install stcgal

然后在platformio.ini添加

1
2
3
4
5
6
upload_flags =
    -P
    stc89a
    -p
    $UPLOAD_PORT
upload_command = stcgal $UPLOAD_FLAGS $SOURCE

即可使用stcgal烧录程序。

写在最后
1.6版本的stcgal因为stc89c52芯片的固件原因有部分芯片会烧录失败,在 https://github.com/nrife/stcgal.git 下载源码后

  • Windows
1
python ./setup.py install
  • Linux
1
sudo ./setup.py install

安装stcgal,同时将stc89改为stc89a
1.8版本的stcgal已添加对不同固件stc8952的支持,可以直接pip安装。

附录

1.8支持的芯片类型如下

stc89stc89astc12astc12bstc12stc15astc15stc8stc8dstc8gusb15

ROS 1 开发

启动CLion

首先在命令行激活ROS 环境

1
2
catkin_make
source ./devel/setup.zsh

在同一终端下启动 CLion

1
clion .

CLion中打开ROS项目

点击文件->打开并在ROS工作区的src目录中选择CMakeLists.txt,然后选择作为项目打开。

设置build路径

默认情况下,CLion将生成输出放在自动创建的cmake-build-debugcmake-build-release 目录中。因此需要将CLion构建路径设置为catkin工作区目录。
文件->设置->构建、执行、部署->CMake中将CMake options修改如下,PATH后面是ROS的devel目录

1
-DCATKIN_DEVEL_PREFIX:PATH=<WORKSPACE_DIRECTORY>/devel

构建目录修改如下,路径是ROS的build目录

1
<WORKSPACE_DIRECTORY>/build

生成器修改为Unix Makefiles
Alt text

ROS 2 开发

启动CLion

1
colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja

此时在build目录下会生成文件compile_commands.json,然后

1
2
source install/setup.zsh
clion .

文件->打开选择工作空间下build文件夹下compile_commands.json。作为项目打开 Alt text

然后在工具->编译数据库->更改项目根选择工作空间作为根目录 Alt text

编译工程

文件->设置->工具->外部工具点击+号,新增一个工具。具体填写内容就是之前编译ROS 2 工作空间的命令。程序填写colcon ,实参填写build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja,工作目录选择ros2的工作空间。 Alt text

保存后在工具->外部工具选择colcon build,此时可以编译整个工作空间。

编译调试功能包

1、创建命令脚本
在功能包下新建一个文件命名为cmake_commands.bat,填写如下内容

1
2
3
/usr/bin/cmake /home/duxinyi/Code/ROS/ROS2/HelloWorld/src/cpp_pubsub -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja -DCMAKE_INSTALL_PREFIX=/home/duxinyi/Code/ROS/ROS2/HelloWorld/install/cpp_pubsub
/usr/bin/cmake --build /home/duxinyi/Code/ROS/ROS2/HelloWorld/build/cpp_pubsub -- -j8 -l8
/usr/bin/cmake --install /home/duxinyi/Code/ROS/ROS2/HelloWorld/build/cpp_pubsub

第一行为构建命令,第一个路径为功能包路径,第二个路径为功能包的安装目录;第二行为编译命令,路径为功能包的构建目录;第三行为安装命令,路径为功能包的构建目录。

2、创建自定义构建目标
文件->设置->构建、执行、部署->自定义构建目标点击+号,新增一个目标。在构建 中添加外部工具,选择功能包下的cmake_commands.bat,并将工作目录选择为功能包的构建目录 Alt text

3、配置run/debug功能
添加配置->编辑配置点击+号,选择自定义构建应用程序,在目标选择上一步生成的构建目标,在可执行文件 选择功能包编译出的可执行文件,删除执行前中的构建。 Alt text

4、断点调试
在功能包的CMakeLists.txt中添加SET(CMAKE_BUILD_TYPE "Debug")

PyCharm

ROS 开发

PyCharm 在设置项目解释器后默认是没有添加ROS 环境,在设置->文件->项目->Python解释器->python解释器中,选择全部显示

Alt text

选择最右侧的查看解释器路径

Alt text

由此可以看出,在PyCharm中没有包含ROS 库,将其添加进解释器路径即可进行ROS 开发

后续使用自定义消息时,同样需要将工作空间内/devel/lib/python3/dist-packages添加进解释器路径

OpenCV 冲突

ROS 安装的 cv_bridge 可能与 pip 安装的 OpenCV 环境发生冲突,导致相关代码运行异常。在通用设置所述的运行配置环境变量中添加:

1
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/ros/noetic/lib

OpenCV 环境变量配置

This post is licensed under CC BY 4.0 by the author.