Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[refactored version of #221] Total refactoring #231

Merged
merged 12 commits into from
Apr 7, 2023

Conversation

knorth55
Copy link
Member

@knorth55 knorth55 commented Mar 1, 2023

@knorth55 knorth55 mentioned this pull request Mar 1, 2023
include/usb_cam/usb_cam.h Outdated Show resolved Hide resolved
@knorth55
Copy link
Member Author

knorth55 commented Mar 1, 2023

I rebased #221 and remove weird commits.
I also squash some fix commits into one.

@twdragon can you check this PR?

@twdragon
Copy link
Collaborator

twdragon commented Mar 1, 2023

I rebased #221 and remove weird commits. I also squash some fix commits into one.

@twdragon can you check this PR?

@knorth55 thank you, I really appreciate your help. Do you propose to close #221 and start working here?

@twdragon
Copy link
Collaborator

twdragon commented Mar 1, 2023

@knorth55 sorry, but I am not a member of ros-drivers team who manage maintainers( Maybe, @flynneva or @tfoote can do

@knorth55
Copy link
Member Author

knorth55 commented Mar 1, 2023

Do you propose to close #221 and start working here?

Yes.
I propose to use #231 and add commits if you want.

@knorth55
Copy link
Member Author

knorth55 commented Mar 1, 2023

Maybe, @flynneva or @tfoote can do

Thanks!
@flynneva @tfoote can you add me as a maintainer of this package for ROS1?

@twdragon
Copy link
Collaborator

twdragon commented Mar 1, 2023

@knorth55 I do not want to mess up with the commits, so we can leave this PR as is and start reviewing here. If you agree with the current state, I will be very happy to hear from you!

@twdragon
Copy link
Collaborator

twdragon commented Mar 1, 2023

@knorth55 I built and tested the package in the state of this PR, so we can proceed

include/usb_cam/usb_cam.h Outdated Show resolved Hide resolved
@tfoote
Copy link

tfoote commented Mar 1, 2023

@twdragon 's request I have added @knorth55 to the usb_cam team to help with maintenance.

@knorth55
Copy link
Member Author

knorth55 commented Mar 2, 2023

@tfoote thank you!

@knorth55
Copy link
Member Author

knorth55 commented Mar 2, 2023

@tfoote
by the way, ros-driver/usb_cam team has admin permission of this repo.
https://github.com/orgs/ros-drivers/teams/usb_cam/repositories
so i can edit settings of this repo.

and in this repo setting, there are already several collaborators who are not listed in ros-driver/usb_cam team.
https://github.com/ros-drivers/usb_cam/settings/access
is this permission setting correct?

I'm also in ros-driver/audio team, and the team only has write permission ofaudio_common.

@knorth55
Copy link
Member Author

knorth55 commented Mar 2, 2023

I can run my Jabra Panacast camera with origin/develop branch,
but I got SegmentationFault with the same camera and same command.

$ rosrun usb_cam usb_cam_node _video_device:=/dev/video2 _image_width:=3840 _image_height:=1080 pixel_format:=mjpeg _color_format:=yuv420p
[ INFO] [1677740250.297930362] [/usb_cam:ros.usb_cam]: Initializing ROS V4L USB camera 'head_camera' (/dev/video2) at 3840x1080 via mmap (uyvy) at 10 FPS
[ INFO] [1677740250.411452243] [/usb_cam:ros.camera_info_manager]: using default calibration URL
[ INFO] [1677740250.411592579] [/usb_cam:ros.camera_info_manager]: camera calibration URL: file:///home/knorth55/.ros/camera_info/head_camera.yaml
[ INFO] [1677740250.411726544] [/usb_cam:ros.camera_calibration_parsers]: Unable to open camera calibration file [/home/knorth55/.ros/camera_info/head_camera.yaml]
[ WARN] [1677740250.411821811] [/usb_cam:ros.camera_info_manager]: Camera calibration file /home/knorth55/.ros/camera_info/head_camera.yaml not found.
[ INFO] [1677740250.414527058] [/usb_cam:ros.usb_cam]: Advertising std_srvs::Empty start service under name 'start_capture'
[ INFO] [1677740250.415240639] [/usb_cam:ros.usb_cam]: Advertising std_srvs::Empty suspension service under name 'stop_capture'
[ INFO] [1677740250.415789752] [/usb_cam:ros.usb_cam]: Advertising std_srvs::Trigger supported formats information service under name 'supported_formats'
[ INFO] [1677740250.416311926] [/usb_cam:ros.usb_cam]: Advertising std_srvs::Trigger supported V4L controls information service under name 'supported_controls'
Opening streaming device /dev/video2
Video4Linux: IOCTL is not supported
Video4linux: Querying V4L2 driver for available controls (register base 0x980900, 0..99)
Sorting control names:
	white_balance_temperature_auto
	brightness
	contrast
	saturation
	gain
	white_balance_temperature
	sharpness
	backlight_compensation
	pan_absolute
	tilt_absolute
	zoom_absolute
	pan_speed
	tilt_speed
[ WARN] [1677740250.526545673] [/usb_cam:ros.usb_cam]: NOTE: the parameters generated for V4L intrinsic camera controls will be placed under namespace 'intrinsic_controls'
[ INFO] [1677740250.526626492] [/usb_cam:ros.usb_cam]: Use 'intrinsic_controls/ignore' list to enumerate the controls provoking errors or the ones you just want to keep untouched
[ INFO] [1677740250.526641342] [/usb_cam:ros.usb_cam]: Attempting to generate ROS parameter for V4L2 control 'white_balance_temperature_auto':
	White Balance Temperature, Auto, min = 0, max = 1, step = 1, flags = 0x0 [1] (bool 1/0)
[ INFO] [1677740250.527214518] [/usb_cam:ros.usb_cam]: Parameter intrinsic_controls/white_balance_temperature_auto exposed with value 1
[ INFO] [1677740250.527234958] [/usb_cam:ros.usb_cam]: Attempting to generate ROS parameter for V4L2 control 'brightness':
	Brightness, min = 0, max = 255, step = 1, flags = 0x0 [127]
[ INFO] [1677740250.527697976] [/usb_cam:ros.usb_cam]: Parameter intrinsic_controls/brightness exposed with value 127
[ INFO] [1677740250.527736130] [/usb_cam:ros.usb_cam]: Attempting to generate ROS parameter for V4L2 control 'contrast':
	Contrast, min = 0, max = 191, step = 1, flags = 0x0 [140]
[ INFO] [1677740250.528169991] [/usb_cam:ros.usb_cam]: Parameter intrinsic_controls/contrast exposed with value 140
[ INFO] [1677740250.528189588] [/usb_cam:ros.usb_cam]: Attempting to generate ROS parameter for V4L2 control 'saturation':
	Saturation, min = 128, max = 176, step = 1, flags = 0x0 [143]
[ INFO] [1677740250.528573045] [/usb_cam:ros.usb_cam]: Parameter intrinsic_controls/saturation exposed with value 143
[ INFO] [1677740250.528594548] [/usb_cam:ros.usb_cam]: Attempting to generate ROS parameter for V4L2 control 'gain':
	Gain, min = 0, max = 255, step = 1, flags = 0x0 [229]
[ INFO] [1677740250.529048198] [/usb_cam:ros.usb_cam]: Parameter intrinsic_controls/gain exposed with value 229
[ INFO] [1677740250.529084022] [/usb_cam:ros.usb_cam]: Attempting to generate ROS parameter for V4L2 control 'white_balance_temperature':
	White Balance Temperature, min = 0, max = 6500, step = 1, flags = 0x10 [3700]
[ INFO] [1677740250.529474488] [/usb_cam:ros.usb_cam]: Parameter intrinsic_controls/white_balance_temperature exposed with value 3700
[ INFO] [1677740250.529496831] [/usb_cam:ros.usb_cam]: Attempting to generate ROS parameter for V4L2 control 'sharpness':
	Sharpness, min = 0, max = 255, step = 1, flags = 0x0 [140]
[ INFO] [1677740250.529872781] [/usb_cam:ros.usb_cam]: Parameter intrinsic_controls/sharpness exposed with value 140
[ INFO] [1677740250.529908416] [/usb_cam:ros.usb_cam]: Attempting to generate ROS parameter for V4L2 control 'backlight_compensation':
	Backlight Compensation, min = 0, max = 255, step = 1, flags = 0x0 [229]
[ INFO] [1677740250.530278819] [/usb_cam:ros.usb_cam]: Parameter intrinsic_controls/backlight_compensation exposed with value 229
[ INFO] [1677740250.530301440] [/usb_cam:ros.usb_cam]: Attempting to generate ROS parameter for V4L2 control 'pan_absolute':
	Pan (Absolute), min = -302400, max = 302400, step = 1, flags = 0x0 [0]
[ INFO] [1677740250.530669857] [/usb_cam:ros.usb_cam]: Parameter intrinsic_controls/pan_absolute exposed with value 0
[ INFO] [1677740250.530705871] [/usb_cam:ros.usb_cam]: Attempting to generate ROS parameter for V4L2 control 'tilt_absolute':
	Tilt (Absolute), min = -72000, max = 72000, step = 1, flags = 0x0 [0]
[ INFO] [1677740250.531044429] [/usb_cam:ros.usb_cam]: Parameter intrinsic_controls/tilt_absolute exposed with value 0
[ INFO] [1677740250.531061790] [/usb_cam:ros.usb_cam]: Attempting to generate ROS parameter for V4L2 control 'zoom_absolute':
	Zoom, Absolute, min = 1, max = 75, step = 1, flags = 0x0 [1]
[ INFO] [1677740250.531361620] [/usb_cam:ros.usb_cam]: Parameter intrinsic_controls/zoom_absolute exposed with value 1
[ INFO] [1677740250.531378178] [/usb_cam:ros.usb_cam]: Attempting to generate ROS parameter for V4L2 control 'pan_speed':
	Pan (Speed), min = 0, max = 10, step = 1, flags = 0x0 [5]
[ INFO] [1677740250.531757206] [/usb_cam:ros.usb_cam]: Parameter intrinsic_controls/pan_speed exposed with value 5
[ INFO] [1677740250.531787194] [/usb_cam:ros.usb_cam]: Attempting to generate ROS parameter for V4L2 control 'tilt_speed':
	Tilt (Speed), min = 0, max = 10, step = 1, flags = 0x0 [5]
[ INFO] [1677740250.532119423] [/usb_cam:ros.usb_cam]: Parameter intrinsic_controls/tilt_speed exposed with value 5
Video4linux: Setting up auxiliary camera parameters
Video4linux: error setting camera parameter: 'white_balance_temperature: Connection timed out
VIDIOC_S_CTRL: failed: Connection timed out
'
Video4linux: cannot set V4L control white_balance_temperature
Video4linux: error setting camera parameter: 'sharpness: Protocol error
VIDIOC_S_CTRL: failed: Protocol error
'
Video4linux: cannot set V4L control sharpness
Video4linux: error setting camera parameter: 'backlight_compensation: Protocol error
VIDIOC_S_CTRL: failed: Protocol error
'
Video4linux: cannot set V4L control backlight_compensation
Video4linux: error setting camera parameter: 'Error setting controls: Protocol error
VIDIOC_S_EXT_CTRLS: failed: Protocol error
'
Video4linux: cannot set V4L control pan_absolute
Segmentation fault
$ v4l2-ctl --list-formats-ext -d /dev/video2
ioctl: VIDIOC_ENUM_FMT
	Index       : 0
	Type        : Video Capture
	Pixel Format: 'NV12'
	Name        : Y/CbCr 4:2:0
		Size: Discrete 1920x1080
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.042s (24.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
		Size: Discrete 1280x720
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.037s (27.000 fps)
			Interval: Discrete 0.042s (24.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
		Size: Discrete 960x544
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.037s (27.000 fps)
			Interval: Discrete 0.042s (24.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
		Size: Discrete 640x360
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.037s (27.000 fps)
			Interval: Discrete 0.042s (24.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
		Size: Discrete 3840x1080
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.037s (27.000 fps)
			Interval: Discrete 0.042s (24.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
		Size: Discrete 4800x1200
			Interval: Discrete 0.067s (15.000 fps)

	Index       : 1
	Type        : Video Capture
	Pixel Format: 'MJPG' (compressed)
	Name        : Motion-JPEG
		Size: Discrete 1920x1080
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.042s (24.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
		Size: Discrete 1280x720
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.037s (27.000 fps)
			Interval: Discrete 0.042s (24.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.037s (27.000 fps)
			Interval: Discrete 0.042s (24.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.037s (27.000 fps)
			Interval: Discrete 0.042s (24.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
		Size: Discrete 960x544
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.037s (27.000 fps)
			Interval: Discrete 0.042s (24.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
		Size: Discrete 640x360
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.037s (27.000 fps)
			Interval: Discrete 0.042s (24.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
		Size: Discrete 1280x720
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.037s (27.000 fps)
			Interval: Discrete 0.042s (24.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.037s (27.000 fps)
			Interval: Discrete 0.042s (24.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.037s (27.000 fps)
			Interval: Discrete 0.042s (24.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
		Size: Discrete 3840x1080
			Interval: Discrete 0.045s (22.000 fps)
			Interval: Discrete 0.067s (15.000 fps)

@twdragon

@knorth55
Copy link
Member Author

knorth55 commented Mar 2, 2023

Hmm, I rebuild the branch, and now it works...
it is quire weird behavior...

I was running wrong command.
It was my misunderstanding, sorry @twdragon

- rosrun usb_cam usb_cam_node _video_device:=/dev/video2 _image_width:=3840 _image_height:=1080 pixel_format:=mjpeg _color_format:=yuv420p
+ rosrun usb_cam usb_cam_node _video_device:=/dev/video2 _image_width:=3840 _image_height:=1080 _pixel_format:=mjpeg _color_format:=yuv420p

@knorth55
Copy link
Member Author

knorth55 commented Mar 2, 2023

@twdragon
I found this PR has memory leak.
I thought this PR solved #211, but it seems #211 is not solved?

I continued running this PR and the memory usage got larger and larger.
every 1 seconds 0.1% of my PC memory leaks.
in the video, the memory usage reached to 10%, and continues going up.
I kept running the node, and the memory usage caused computer's freeze.

usb_cam_memory_leak_compressed.mp4

@knorth55
Copy link
Member Author

knorth55 commented Mar 2, 2023

I found this memory leak issue also occurs in origin/develop branch, which is reported in #211
but 0.3.6 tag does not have the memory leak issue, so we should fix this issue before the release.

the video is the case with 0.3.6 and the memory usage is always 1.1%.

usb_cam_0.3.6_memory_compressed.mp4

@twdragon
I thinks this memory leak is a big issue, and should be splitted from this PR.
I open a PR #233 to solve the issue first.
but this PR also have the memory leak problems, so please check it.

@knorth55
Copy link
Member Author

knorth55 commented Mar 2, 2023

I fixed the memory leak probrem in d9b7ac9 (#231)

now the memory usage stops at 1.1% as expected.

usb_cam_pr_fix_memory_leak_compressed.mp4

I trusted the commit message that #211 is fixed in this PR, but actually #211 was not solved in this PR...
Now we should be cautious to merge this PR.
This PR seems not properly tested, so we should take more time to check this PR.
If there are serious issue solution in this PR, the issue solution should be merged first, and the refactoring commits should be merged later in this PR.

@twdragon
Copy link
Collaborator

twdragon commented Mar 2, 2023

I fixed the memory leak probrem in d9b7ac9 (#231)

now the memory usage stops at 1.1% as expected.

I trusted the commit message that #211 is fixed in this PR, but actually #211 was not solved in this PR... Now we should be cautious to merge this PR. This PR seems not properly tested, so we should take more time to check this PR. If there are serious issue solution in this PR, the issue solution should be merged first, and the refactoring commits should be merged later in this PR.

Thank you! @knorth55 I will test thoroughly the memory issues dedicated to FFMPEG functions because it occurs literally because only of them. Thank you for notifying me and for your fix! I completely agree with you, we should merge #233 first because I had used the libavcodec function mistakenly. I perform the test today. to prove that there are no memory leaks anymore.

The question: if I discover that the node works normally in all accessible decoder modes, can I merge #233 by myself? I can test for all: YUV, MJPEG, H.264. And do we need to rebase again, what do you think?

@knorth55
Copy link
Member Author

knorth55 commented Mar 2, 2023

The question: if I discover that the node works normally in all accessible decoder modes, can I merge #233 by myself? I can test for all: YUV, MJPEG, H.264. And do we need to rebase again, what do you think?

Yes, you can merge #233 when you finish tests and find no error.
I will rebase this PR after the merge.

@twdragon
Copy link
Collaborator

twdragon commented Mar 2, 2023

@knorth55 I merged #233 so this PR is ready for rebase and including of the fix

@twdragon
Copy link
Collaborator

twdragon commented Mar 3, 2023

@knorth55 thank you! Can we now prepare the release of the package in its current state and then announce the release of the new version after this PR would be merged? What do you think?

@knorth55
Copy link
Member Author

knorth55 commented Mar 3, 2023

Can we now prepare the release of the package in its current state and then announce the release of the new version after this PR would be merged? What do you think?

@twdragon
I agree. but I submit one more PR #234 .
After merging #234, we can release 0.3.7.
Then, we can move forward to merge this PR and prepare the next release 0.3.8.

@twdragon
Copy link
Collaborator

twdragon commented Mar 3, 2023

@knorth55 done with #234. I can resolve the file and make #234 a part of this PR, it does not make any sense here. Do you agree?

	- The node implemented as singleton with monopolistic device
	  access model (one node per device)
	- Moved and separated into different blocks the the code using
	  V4L2, ROS and FFMPEG APIs
	- Removed message pointers completely, the node uses runtime-
	  constant shared object addresses
	- Debugged FFMPEG decoder algorithm, removed memory leak.
	  Closes ros-drivers#211
	- Added (using @flynneva's code) the conditional compilation
	  directives to exploit properly versioned libavcodec API.
	  Closes ros-drivers#207
	- Closes ros-drivers#203
	- Added separated launch files to run the node and to test it
	  using image_view. Removed image_view from ROS dependencies.
	- Node parameters with convenient defaults moved from the
	  launch file to YML file for the parameter server
	- Documented parameter names and default values
@knorth55
Copy link
Member Author

knorth55 commented Mar 3, 2023

@twdragon No worries. I rebased.

@knorth55
Copy link
Member Author

knorth55 commented Mar 3, 2023

@tfoote Hi, sorry for bothering you many times.
Can you give me the write permission of https://github.com/ros-gbp/usb_cam-release ?

@flynneva
Copy link
Collaborator

flynneva commented Mar 6, 2023

@knorth55 @tfoote I am a little late to the party here (sorry it has been busy start to the year for me) but I am pretty confused by this PR and the other ROS 1 ones you guys are targeting to the develop branch.

From #203 my understanding was the solution was:

  1. Refactor ros2 branch so that it uses a base usb_cam C++ library
  2. Use this base usb_cam lib for both ROS 1 and ROS 2 nodes

That would mean all we would need to do is write small / thin wrapper for ROS 1 and add it to the ros2 branch. Once we do that, then we can deprecate the ros1 develop branch and rename the ros2 branch to main and have both ROS 1 and ROS 2 PRs target the same branch.

This PR is copying over a lot of code from the ros2 branch back to develop...are we sure that is a good idea?

@knorth55
Copy link
Member Author

knorth55 commented Mar 6, 2023

@flynneva I think this is a kind of backport PR from ros2 branch to ros1.
Merging ros1 and ros2 branch is quite good idea, but it will need a lot of works.
There are two strategies to merge ros1 and ros2 branch

  1. Use C++ macros
  2. Use ros1-ros2 bridge
  3. Write good CMakelists.txt

My plan is the first one or the third one.
I don't want to do the second one, because the ROS1 user needs to install ROS2.
Because there are a lot of API changes between ROS1 and ROS2, the first one will be difficult, too.
In order to do either 1. or 3., this backport PR is a good first-step for the plan.
(because ROS1 and ROS2 has different target platform, we need to use macros, though)

So the only problem is who will do the merging.
I don't use ros2, and have no benefits to do the task because there is ros1-ros2 bridge.
(Also, some parts of ROS2 are harder to use than ROS1, which I don't like ROS2)
The merging costs us a lot, so the plan is really a long path for me.

@twdragon
Copy link
Collaborator

@knorth55 @flynneva can I ask you guys for an opinion? As I prepared the version of this package with essential changes in user workflow and configuration, maybe it will be more convenient to fork and document the entire package and release it separately, let the users test it, and then merge after. What do you think?

@flynneva
Copy link
Collaborator

@twdragon i don't see why you can't just merge it here if @knorth55 approves of the changes.

Just I've already shared my thoughts about these changes above, and I think a lot of it is duplicated work from the ROS2 branch already.

I think it'd be better if we combine our efforts and work together on the same branch / code instead of developing the same features side by side.

@flynneva
Copy link
Collaborator

@knorth55 @twdragon since both of you are the maintainers of the ROS 1 branch of this repo now, please feel free to discuss about what you'd like to do as far as the ROS 1 side of things go and go from there 🙏🏼

@knorth55
Copy link
Member Author

knorth55 commented Mar 21, 2023

@twdragon Sorry for waiting you. I'm preparing the ROS1 release, so please wait to merge this PR.

ros-gbp/usb_cam-release#2

@twdragon
Copy link
Collaborator

@knorth55 @flynneva excellent, so we agree 🤝 Let's proceed here :)

@knorth55
Copy link
Member Author

knorth55 commented Mar 24, 2023

@twdragon I did the release of usb_cam now. Sorry for waiting you.
ros/rosdistro#36567
ros/rosdistro#36568

@twdragon
Copy link
Collaborator

@knorth55 @flynneva sorry for the long silence. What plan may we have now? Will we conjoin ROS 1 and ROS2 code with CMake and use this PR as the initial point?

@knorth55
Copy link
Member Author

knorth55 commented Mar 27, 2023

@twdragon i havent checked ros1 and ros2 merged pr.
we should move forward to the merge, but i cannot tkae enough time to do so, so i will check i slow pace.
and i also want to appreciate your great work (this PR).
so imo, i want to merge this pr first, and then try merging ros1 and ros2 branch.

@twdragon
Copy link
Collaborator

@knorth55 thank you! I also tested this version again and it does not seem to have major issues. So, if you and @flynneva agree, I can merge this PR next week, and then prepare a new README.md or wiki article to let the users try the new configuration workflow. Then we can think about refreshing the idea of merging ROS1/ROS2 branches in a more modular way. What do you think?

@knorth55
Copy link
Member Author

@twdragon I agree. We can move forward to mege this PR to develop branch (ROS1 branch).
We will wait release for several month and check the bug with bug report.

@twdragon
Copy link
Collaborator

twdragon commented Apr 7, 2023

@knorth55 @flynneva, as I said before, I am ready to merge. I will merge this PR today and update the documentation on the ROS wiki (the old version of the documentation is already preserved)

@twdragon twdragon merged commit d5d5501 into ros-drivers:develop Apr 7, 2023
@twdragon
Copy link
Collaborator

twdragon commented Apr 7, 2023

@knorth55 documentation http://wiki.ros.org/usb_cam updated

@knorth55 knorth55 deleted the twdragon-develop branch April 7, 2023 19:56
@knorth55
Copy link
Member Author

knorth55 commented Apr 7, 2023

@twdragon good! thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants