diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 54b0fab..bb5d3bc 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,9 +1,9 @@ { "name": "ft_analytics", "image": "ft_analytics:latest", - "workspaceFolder": "/workspaces/can_viewer", + "workspaceFolder": "/workspaces/ft_analytics", "runArgs": [ - "--net=host", + "--network=host", "--privileged" ], "settings": {}, diff --git a/docker/Dockerfile b/docker/Dockerfile index 74be5e3..94db19f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -3,7 +3,7 @@ FROM ubuntu:24.04 ENV PIP_BREAK_SYSTEM_PACKAGES=1 \ SHELL=/bin/bash -ARG USERNAME=can_viewer +ARG USERNAME=ft_analytics ARG USER_UID=1000 ARG USER_GID=${USER_UID} @@ -18,34 +18,41 @@ RUN if id -u "${USER_UID}" >/dev/null 2>&1; then \ && chmod 0440 /etc/sudoers.d/${USERNAME} RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - python3-pip \ - nano \ - iproute2 \ - can-utils \ - lsb-release \ - curl \ - gnupg \ - && rm -rf /var/lib/apt/lists/* - - RUN pip3 install --no-cache-dir python-can cantools python3-rosdep + && apt-get install -y --no-install-recommends curl gnupg lsb-release ca-certificates RUN echo "deb [signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list \ - && curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key | gpg --dearmor -o /usr/share/keyrings/ros-archive-keyring.gpg \ - && apt-get update \ - && apt-get install -y --no-install-recommends ros-jazzy-ros-core python3-colcon-common-extensions \ + && curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key | gpg --dearmor -o /usr/share/keyrings/ros-archive-keyring.gpg + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ros-jazzy-ros-core \ + python3-colcon-common-extensions \ + python3-pip \ + nano \ + iproute2 \ + can-utils \ + python3-rosdep \ + build-essential \ + cmake \ + kmod \ && rm -rf /var/lib/apt/lists/* -RUN echo "source /opt/ros/jazzy/setup.bash" >> /home/${USERNAME}/.bashrc \ - && echo "source /workspaces/can_viewer/install/setup.bash" >> /home/${USERNAME}/.bashrc +RUN pip3 install --no-cache-dir --upgrade --break-system-package \ + python-can cantools + +RUN echo "source /opt/ros/jazzy/setup.bash" >> /home/${USERNAME}/.bashrc \ + && echo "source /workspaces/ft_analytics/install/setup.bash" >> /home/${USERNAME}/.bashrc + +WORKDIR /workspaces/ft_analytics + +RUN mkdir -p /workspaces/ft_analytics/ros2_ws/src -WORKDIR /workspaces/can_viewer COPY --chown=${USERNAME}:${USERNAME} ros2_ws/src ros2_ws/src -#RUN rosdep update \ -# && rosdep install -r --rosdistro jazzy \ -# --from-paths ros2_ws/src --ignore-src -y +RUN rosdep init \ + && apt-get update \ + && rosdep update \ + && rosdep install -r --rosdistro jazzy --from-paths ros2_ws/src --ignore-src -y USER ${USERNAME} - CMD ["/bin/bash"] diff --git a/launch.bash b/launch.bash new file mode 100644 index 0000000..fd380ff --- /dev/null +++ b/launch.bash @@ -0,0 +1,4 @@ +#!/bin/bash +ros2 run ft_analytics can_viewer_node foxglove_bridge foxglove_bridge \ + --ros-args -p send_buffer_limit:=1000000000 + diff --git a/ros2_ws/src/ft_can_viewer/CMakeLists.txt b/ros2_ws/src/ft_can_viewer/CMakeLists.txt index 8e570bd..a465576 100644 --- a/ros2_ws/src/ft_can_viewer/CMakeLists.txt +++ b/ros2_ws/src/ft_can_viewer/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.8) -project(ft_can_viewer) +project(ft_analytics) if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") add_compile_options(-Wall -Wextra) diff --git a/ros2_ws/src/ft_can_viewer/package.xml b/ros2_ws/src/ft_can_viewer/package.xml index 70fd833..5623c2e 100644 --- a/ros2_ws/src/ft_can_viewer/package.xml +++ b/ros2_ws/src/ft_can_viewer/package.xml @@ -1,7 +1,7 @@ - ft_can_viewer + ft_analytics 0.1.0 CAN - ROS2 Publisher für Foxglove mit Transceiver-Lib Elias diff --git a/ros2_ws/src/ft_can_viewer/src/can_viewer_node.cpp b/ros2_ws/src/ft_can_viewer/src/can_viewer_node.cpp index 842e2f9..5b2268c 100644 --- a/ros2_ws/src/ft_can_viewer/src/can_viewer_node.cpp +++ b/ros2_ws/src/ft_can_viewer/src/can_viewer_node.cpp @@ -2,12 +2,13 @@ #include #include #include -#include -#include +#include +#include +#include class CanViewerNode : public rclcpp::Node { public: - CanViewerNode() : Node("can_viewer_node"), transceiver_("vcan0", {}) { + CanViewerNode() : Node("can_viewer_node"), transceiver_("slcan0", {{}}) { allow_torque_pub_ = this->create_publisher("can/telemetrie/allow_torque", 10); brake_ok_pub_ = this->create_publisher("can/telemetrie/brake_ok", 10); torque_limit_pub_ = this->create_publisher("can/telemetrie/torque_limit", 10); diff --git a/ros2_ws/src/ft_can_viewer/test/can_gen.sh b/ros2_ws/src/ft_can_viewer/test/can_gen.sh new file mode 100755 index 0000000..a9e9df9 --- /dev/null +++ b/ros2_ws/src/ft_can_viewer/test/can_gen.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# 1 000 Frames, 10 ms Abstand +for i in $(seq 0 999); do + # Zufallswert 0-255 → zweistelliges Hex + v=$(printf '%02X' $((RANDOM % 256))) + # Byte0 Byte1 Byte2=[$v] rest = 0 + cansend slcan0 720#0001${v}00000000 + sleep 0.01 +done